package nsu.edu.zsq.service.sys;

import java.util.List;

import com.github.pagehelper.PageInfo;

import nsu.edu.zsq.bean.Course;
import nsu.edu.zsq.bean.SchMajor;
import nsu.edu.zsq.bean.TchCourse;
import nsu.edu.zsq.bean.Teacher;
import nsu.edu.zsq.param.PageQuery;
import nsu.edu.zsq.param.TchCourseParam;

/** 
* Description: 教师课程的service类<br>
*/
public interface TeacherCourseService {
    
    /**
     * 获取一个教师课程信息
     * @param tchCourseId 教师课程id
     * @return TchCourse
     */
    public TchCourse getTchCourse(int tchCourseId);
    
    /**
     * 根据教师编号，获取该教师课程列表
     * @param teacherNo 教师编号
     * @return List<TchCourseParam>
     */
    public List<TchCourseParam> listTchCourse(String teacherNo);
    
    /**
     * 通过院系id获取教师列表
     * @param orgId 院系id
     * @param pageQuery 分页数据
     * @return PageInfo<Teacher>
     */
    public PageInfo<Teacher> listTeacherWithPage(int orgId, PageQuery pageQuery);
    
    
    /**
     * 批量删除教师课程
     * @param tchCourseIds 教师课程id数组
     */
    public void deleteBatchTchCourse(int[] tchCourseIds);
    
    /**
     * 删除一条教师课程
     * @param tchCourseId 教师课程id
     */
    public void deleteTchCourse(int tchCourseId);
    
    /**
     * 通过院系id，获取该院系下所有专业
     * @param orgId 院系id
     * @return List<SchMajor>
     */
    public List<SchMajor> listMajorByOrgId(int orgId);
    
    /**
     * 获取院系下指定专业所有课程
     * @param orgId 院系id
     * @param majorNo 专业代码
     * @param pageQuery 分页数据
     * @return PageInfo<Course>
     */
    public PageInfo<Course> listCourseByMajorNo(int orgId, String majorNo, PageQuery pageQuery);
    
    /**
     * 批量添加课程给教师(即保存教师课程信息)
     * @param courseNos 课程代码数组
     * @param teacherNo 教师编号
     */
    public void saveBatchCourseToTeacher(String[] courseNos, String teacherNo);
    
    /**
     * 添加单个课程给教师(即保存教师课程信息)
     * @param courseNo 课程代码
     * @param teacherNo 教师编号
     */
    public void saveCourseToTeacher(String courseNo, String teacherNo);
    
    /**
     * 更新教师课程（主修课：更新每周次数；选修课：更新上课时间等）
     * @param tchCourse 教师课程
     */
    public void updateTchCourse(TchCourse tchCourse);
    
    /**
     * 获取带有上课时间、班级的教师课程列表
     * @param teacherNo 教师编号
     * @return List<TchCourseParam>
     */
    public List<TchCourseParam> listTchCourseWithCourseTime(String teacherNo);

}
